package com.softeem.yuedong_server.controller;



import com.softeem.yuedong_server.dto.Result;
import com.softeem.yuedong_server.entity.Singer;
import com.softeem.yuedong_server.service.SingerService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Objects;

@Tag(name = "歌手管理")
@RequestMapping("/singer")
@RestController
public class SingerController extends BaseController{
    @Autowired
    private SingerService singerService;
    /*
    * 1.歌手添加
    * 2.根据id修改歌手
    * 3.根据id删除歌手信息
    * 4.根据id查询歌手
    * 5.查询所有歌手
    * */

    @Operation(summary = "歌手添加",description = "添加歌手信息，需要提供基本的参数，例如名称和性别")
    @PostMapping("/")
    public Result add(@RequestBody Singer singer){
        return singerService.save(singer) ? Result.ok().setMsg("添加成功") : Result.fail().setMsg("添加失败");
    }

    @Operation(summary = "歌手更新",description = "修改歌手信息，id必须提供")
    @PutMapping("/")
    public Result update(@RequestBody Singer singer){
        return singerService.updateById(singer) ? Result.ok().setMsg("修改成功").setData(singer) : Result.fail().setMsg("修改失败");
    }

    @Operation(summary = "歌手删除",description = "根据提供的歌手id删除歌手，id必须提供")
    @DeleteMapping("/{id}")
    public Result del(@PathVariable Integer id){
        return singerService.removeById(id) ? Result.ok().setMsg("删除成功") : Result.fail().setMsg("删除失败");
    }

    @Operation(summary = "歌手详情",description = "必须提供id，查看歌手详情，并显示歌手所有的歌曲信息")
    @GetMapping("/{id}")
    public Result selectById(@PathVariable Integer id){
        if(Objects.nonNull(singerService.getById(id))) {
            return Result.ok().setMsg("查询成功").setData(singerService.getById(id));
        }
        return Result.fail().setMsg("歌手不存在");
    }

    @Operation(summary = "歌手列表",description = "查询所有的歌手信息，提供页码和每页大小，分页显示数据")
    @GetMapping("/list")
    public Result selectAll(){
        if(Objects.nonNull(singerService.list())){
            return Result.ok().setMsg("查询成功").setData(singerService.list());

        }
        return Result.fail().setMsg("无记录");
    }

}
